﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;

namespace UIObjects
{
    public interface ILog
    {
        event EventHandler<InternalMessageEventArgs> InterfaceInternalMessage;
        event EventHandler<LogEventArgs> InterfaceLogEntrySent;
        event EventHandler<LogEventArgs> InterfaceWriteRequested;
        bool DebugEnabled { get; }
        bool ErrorEnabled { get; }
        bool FatalEnabled { get; }
        bool InfoEnabled { get; }
        string Name { get; }
        bool WarnEnabled { get; }
        void Debug(string message);
        void Debug(string message, Exception exception);
        void Debug(string message, IDictionary<string, object> properties);
        void Debug(string message, Exception exception, IDictionary<string, object> properties);
        void DebugFormat(string message, params object[] args);
        void DebugFormat(Exception exception, string message, params object[] args);
        void DebugFormat(IFormatProvider provider, string message, params object[] args);
        void DebugFormat(Exception exception, IDictionary<string, object> properties, string message, params object[] args);
        void DebugFormat(Exception exception, IFormatProvider provider, string message, params object[] args);
        void DebugFormat(Exception exception, IDictionary<string, object> properties, IFormatProvider provider, string message, params object[] args);
        void Error(string message);
        void Error(string message, Exception exception);
        void Error(string message, IDictionary<string, object> properties);
        void Error(string message, Exception exception, IDictionary<string, object> properties);
        void ErrorFormat(string message, params object[] args);
        void ErrorFormat(Exception exception, string message, params object[] args);
        void ErrorFormat(IFormatProvider provider, string message, params object[] args);
        void ErrorFormat(Exception exception, IDictionary<string, object> properties, string message, params object[] args);
        void ErrorFormat(Exception exception, IFormatProvider provider, string message, params object[] args);
        void ErrorFormat(Exception exception, IDictionary<string, object> properties, IFormatProvider provider, string message, params object[] args);
        void Fatal(string message);
        void Fatal(string message, Exception exception);
        void Fatal(string message, IDictionary<string, object> properties);
        void Fatal(string message, Exception exception, IDictionary<string, object> properties);
        void FatalFormat(string message, params object[] args);
        void FatalFormat(Exception exception, string message, params object[] args);
        void FatalFormat(IFormatProvider provider, string message, params object[] args);
        void FatalFormat(Exception exception, IDictionary<string, object> properties, string message, params object[] args);
        void FatalFormat(Exception exception, IFormatProvider provider, string message, params object[] args);
        void FatalFormat(Exception exception, IDictionary<string, object> properties, IFormatProvider provider, string message, params object[] args);
        void Info(string message);
        void Info(string message, Exception exception);
        void Info(string message, IDictionary<string, object> properties);
        void Info(string message, Exception exception, IDictionary<string, object> properties);
        void InfoFormat(string message, params object[] args);
        void InfoFormat(Exception exception, string message, params object[] args);
        void InfoFormat(IFormatProvider provider, string message, params object[] args);
        void InfoFormat(Exception exception, IDictionary<string, object> properties, string message, params object[] args);
        void InfoFormat(Exception exception, IFormatProvider provider, string message, params object[] args);
        void InfoFormat(Exception exception, IDictionary<string, object> properties, IFormatProvider provider, string message, params object[] args);
        void Warn(string message);
        void Warn(string message, Exception exception);
        void Warn(string message, IDictionary<string, object> properties);
        void Warn(string message, Exception exception, IDictionary<string, object> properties);
        void WarnFormat(string message, params object[] args);
        void WarnFormat(Exception exception, string message, params object[] args);
        void WarnFormat(IFormatProvider provider, string message, params object[] args);
        void WarnFormat(Exception exception, IDictionary<string, object> properties, string message, params object[] args);
        void WarnFormat(Exception exception, IFormatProvider provider, string message, params object[] args);
        void WarnFormat(Exception exception, IDictionary<string, object> properties, IFormatProvider provider, string message, params object[] args);
    }
}
